# 字符串反转
def reverseStr(s):
    if s == "":
        return s
    else:
        return reverseStr(s[1:]) + s[0]


# 斐波那契第n个数
def fibonacci(n):
    if n == 1 or n == 2:
        return 1
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)


# 汉诺塔问题，当n等于1时直接将圆盘从A(起点)搬运到C(终点)，当n>1时先将n-1个圆盘搬到B，再从B搬到C，我们不需要关心具体的过程。
def hanoi(n, src, mid, dst):
    global count
    # 一个圆盘时直接搬到终点
    if n == 1:
        count += 1
        print("第{}步：{}->{}".format(count, src, dst))
    else:
        # 先将n-1个圆盘从A搬到B
        hanoi(n - 1, src, dst, mid)
        count += 1
        print("第{}步：{}->{}".format(count, src, dst))
        # 接着将这n-1个圆盘从B搬到C
        hanoi(n - 1, mid, src, dst)


count = 0
print(fibonacci(10))
print(reverseStr("12345"))
hanoi(3, "A", "B", "C")
